package 每日一题;

/**
 * @description:
 * @author: 小白白
 * @create: 2021-10-20
 **/

public class No453最小操作次数使数组元素相等 {

    /**
     * 给你一个长度为 n 的整数数组，每次操作将会使 n - 1 个元素增加 1 。
     * 返回让数组所有元素相等的最小操作次数。
     * <p>
     * 示例 1：
     * 输入：nums = [1,2,3]
     * 输出：3
     * 解释：
     * 只需要3次操作（注意每次操作会增加两个元素的值）：
     * [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
     * 示例 2：
     * 输入：nums = [1,1,1]
     * 输出：0
     *  
     * 提示：
     * n == nums.length
     * 1 <= nums.length <= 10^5
     * -10^9 <= nums[i] <= 10^9
     * 答案保证符合 32-bit 整数
     */

    public int minMoves(int[] nums) {

        // 每次操作当且仅当能操作 (n-1) 个元素
        int minNum = Integer.MAX_VALUE;
        for (int num : nums) {
            minNum = Math.min(minNum, num);
        }

        int result = 0;

        for (int num : nums) {
            result += (num - minNum);
        }

        return result;
    }

}
